iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
Python

讓Python不拍勝-實用套件實作與介紹系列 第 6

[DAY6]使用Python與系統互動-os(三)

  • 分享至 

  • xImage
  •  

今天要來教各位如何利用os套件的指令,讀取和寫入檔案,以及輸入終端機指令!

打開檔案 os.open('path', mode)

以下為常用的模式

Mode 說明
os.O_RDONLY 以只讀的方式打開
os.O_WRONLY 以只寫的方式打開
os.O_RDWR 以讀寫的方式打開
os.O_APPEND 以追加的方式打開
os.O_CREAT 建立並打開新的檔案
#需要多種模式可用'|'隔開
file_1 = os.open('./ironman.txt', os.O_CREAT | os.O_RDWR)
ironman_dir = os.listdir()
print(ironman_dir) #檢查是否創建成功

輸出結果

['ironman.txt', 'test_rename.txt', 'os.ipynb', 'test_rename', 'MQTT_test.ipynb', 'MQTT_publish.py', 'MQTT_subscribe.py']

將資料寫入檔案 os.write(file, data)

這裡要注意的是,os.write() 這個函數只能接收 byte 物件,所以要將 str 透過 .encode() 轉換成 byte 物件

data = 'Share More Gain More!'
data_byte = data.encode()
os.write(file_1, data_byte)

輸出結果

21 #印出寫入了幾個字

將資料讀出 os.read(file, n)

這裡要特別注意,因為剛剛有寫入資料,所以目前文件的指針是在最後面,要先設定到最前面才能正常讀取資料喔!

os.lseek(file_1, 0, os.SEEK_SET) #將指針移到最前面
data_r = os.read(file_1, 21).decode()
print(data_r)

輸出結果

Share More Gain More!

刪除檔案 os.remove('path')

os.remove('./test_rename.txt')
ironman_dir = os.listdir()
print(ironman_dir) #檢查是否刪除成功

輸出結果

#可以看到 test_rename.txt 已經從目錄中被刪除了
['ironman.txt', 'os.ipynb', 'test_rename', 'MQTT_test.ipynb', 'MQTT_publish.py', 'MQTT_subscribe.py']

利用 os.system("命令"),可直接向終端機一樣和電腦溝通

示範如下:
查詢目前工作路徑的檔案及目錄

os.system("ls -l")

輸出結果

total 48
-rw-r--r--  1 ryanhsu  staff   888 Jul 24 21:42 MQTT_publish.py
-rw-r--r--  1 ryanhsu  staff   731 Jul 24 23:55 MQTT_subscribe.py
-rw-r--r--@ 1 ryanhsu  staff  7635 Jul 24 23:55 MQTT_test.ipynb
-rwxr-xr-x  1 ryanhsu  staff    21 Jul 25 19:37 ironman.txt
-rw-r--r--  1 ryanhsu  staff   713 Jul 24 23:58 os.ipynb
drwxr-xr-x  2 ryanhsu  staff    64 Jul 25 16:50 test_rename

建立資料夾,並查詢目前工作路徑的檔案及目錄

os.system("mkdir test")
os.system("ls -l")

輸出結果

total 48
-rw-r--r--  1 ryanhsu  staff   888 Jul 24 21:42 MQTT_publish.py
-rw-r--r--  1 ryanhsu  staff   731 Jul 24 23:55 MQTT_subscribe.py
-rw-r--r--@ 1 ryanhsu  staff  7635 Jul 24 23:55 MQTT_test.ipynb
-rwxr-xr-x  1 ryanhsu  staff    21 Jul 25 19:37 ironman.txt
-rw-r--r--  1 ryanhsu  staff   713 Jul 24 23:58 os.ipynb
drwxr-xr-x  2 ryanhsu  staff    64 Jul 25 20:01 test
drwxr-xr-x  2 ryanhsu  staff    64 Jul 25 16:50 test_rename

查詢Python版本

os.system("python3 --version")

輸出結果

Python 3.12.4

那os套件的部分就先交到這邊,相信大家實作完後應該對os有基本的了解,各位讀者如有疑問或建議,歡迎在下方留言一起討論!

下一篇將教大家如何利用Python做資料處理!

參考資料:https://steam.oxxostudio.tw/category/python/library/os.html


上一篇
[DAY5]使用Python與系統互動-os(二)
下一篇
[DAY7]使用Python進行資料處理-open()函數
系列文
讓Python不拍勝-實用套件實作與介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言